/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package dao;

import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.ArrayList;
import java.util.List;
import javax.faces.context.FacesContext;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpSession;
import model.Proprietario;

/**
 *
 * @author Elizangela
 */
public class ProprietarioDao {
    private Conexao con;
    private Statement stmt;
    private boolean sucesso = false;
    
    public ProprietarioDao(){
        con = new Conexao();
        try{
            stmt=(Statement)con.getCon().createStatement();
        }catch(SQLException ex){
            ex.printStackTrace();
        }
    }

    public boolean inserir(Proprietario proprietario) {
        FacesContext facesContext = FacesContext.getCurrentInstance();
        HttpServletRequest request = (HttpServletRequest) facesContext.getExternalContext().getRequest();
        HttpSession session = request.getSession();
        try {
            stmt.execute("INSERT INTO proprietario (dono, email, foneResid,celular,estadoDono,cidadeDono,bairroDono,endDono,cep,obs) VALUES ('"+ proprietario.getDono() + "','"+ proprietario.getEmail() + "','" + proprietario.getFoneResidencial() + "','" + proprietario.getCelular() + "','"
                    + proprietario.getEstadoDono() + "','" + proprietario.getCidadeDono() + "','" + proprietario.getBairroDono() + "','"
                     + proprietario.getEndDono() + "','" + proprietario.getCep() + "','" + proprietario.getObs() + "')");
            stmt.execute("INSERT INTO logs (login,acao,dados,horario)VALUES('" + session.getAttribute("usuarioLogin") + "','inserir proprietario','"+ proprietario.toString() + "',NOW())");
            
            sucesso = true;
        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            con.fecharConexao();
        }

        return sucesso;
    }
public List<Proprietario> listar() { 
        List<Proprietario> proprietarios = new ArrayList<Proprietario>();
        try {
            ResultSet rs = stmt.executeQuery("SELECT * FROM proprietario ORDER BY dono");
            while (rs.next()) {
                Proprietario proprietario = new Proprietario();
                proprietario.setCodDono(rs.getInt("codDono"));
                proprietario.setDono(rs.getString("dono"));
                proprietario.setFoneResidencial(rs.getString("foneResid"));
                proprietario.setCelular(rs.getString("celular"));
                proprietario.setEmail(rs.getString("email"));
                proprietario.setBairroDono(rs.getString("bairroDono"));
                proprietario.setCep(rs.getString("cep"));
                proprietario.setCidadeDono(rs.getString("cidadeDono"));
                proprietario.setEndDono(rs.getString("endDono"));
                proprietario.setEstadoDono(rs.getString("estadoDono"));
                proprietario.setObs(rs.getString("obs"));
                proprietarios.add(proprietario);
            }

        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            con.fecharConexao();
        }

        return proprietarios;

   
    }

    public boolean alterar(Proprietario proprietario) {   
        FacesContext facesContext = FacesContext.getCurrentInstance();
        HttpServletRequest request = (HttpServletRequest) facesContext.getExternalContext().getRequest();
        HttpSession session = request.getSession();     
        String alterarDono=("UPDATE proprietario "
                + "SET dono=?,email=?,foneResid=?,celular=?,estadoDono=?,cidadeDono=?,bairroDono=?,endDono=?,cep=?, "
                + "obs=? WHERE codDono=?");
        try {
            PreparedStatement pstmt = con.getCon().prepareStatement(alterarDono);
            pstmt.setString(1,proprietario.getDono());
            pstmt.setString(2, proprietario.getEmail());
            pstmt.setString(3, proprietario.getFoneResidencial());
            pstmt.setString(4, proprietario.getCelular());
            pstmt.setString(5, proprietario.getEstadoDono());
            pstmt.setString(6, proprietario.getCidadeDono());
            pstmt.setString(7, proprietario.getBairroDono());            
            pstmt.setString(8, proprietario.getEndDono());
            pstmt.setString(9, proprietario.getCep());            
            pstmt.setString(10, proprietario.getObs());
            pstmt.setInt(11,proprietario.getCodDono());
            
            pstmt.executeUpdate();
            stmt.execute("INSERT INTO logs (login,acao,dados,horario)VALUES('" + session.getAttribute("usuarioLogin") + "','alterar proprietario',"
                    + "'" + proprietario.toString() + "',NOW())");
            sucesso = true;
        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            con.fecharConexao();
        }

        return sucesso;
    }
        
    

    public boolean remover(Proprietario proprietario) {
        FacesContext facesContext = FacesContext.getCurrentInstance();
        HttpServletRequest request = (HttpServletRequest) facesContext.getExternalContext().getRequest();
        HttpSession session = request.getSession();
        try {
            stmt.execute("INSERT INTO logs (login,acao,dados,horario)VALUES('" + session.getAttribute("usuarioLogin") + "','remover proprietario','" + proprietario.toString() + "',NOW())");
            stmt.execute("DELETE FROM proprietario WHERE codDono = '" +proprietario.getCodDono()+ "'");
            sucesso = true;
        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            con.fecharConexao();
        }
        return sucesso;
    }

    public Proprietario selecionar(Proprietario prop) {
        Proprietario proprietario = new Proprietario();
        try {
            ResultSet rs = stmt.executeQuery("SELECT * FROM proprietario WHERE codDono = '" +prop.getCodDono()+ "'");
            proprietario.setCodDono(rs.getInt("codDono"));
            proprietario.setDono(rs.getString("dono"));
            proprietario.setFoneResidencial(rs.getString("foneResid"));
            proprietario.setCelular(rs.getString("celular"));
            proprietario.setEmail(rs.getString("email"));
            proprietario.setBairroDono(rs.getString("bairroDono"));
            proprietario.setCep(rs.getString("cep"));
            proprietario.setCidadeDono(rs.getString("cidadeDono"));
            proprietario.setEndDono(rs.getString("endDono"));
            proprietario.setEstadoDono(rs.getString("estadoDono"));
            proprietario.setObs(rs.getString("obs"));
        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            con.fecharConexao();
        }
        return proprietario;
    }
    
}
